using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._WorkflowManagerTools._Configuration
{
    /// <summary>
    /// <para>Clear Job Replication Information</para>
    /// <para>Deletes the  replication information on a parent repository and sends  a web service call to all the child repositories in the cluster. Consequently, the replication information is cleared from all the repositories participating in the cluster.</para>
    /// <para>删除父存储库上的复制信息，并向群集中的所有子存储库发送 Web 服务调用。因此，将从参与集群的所有存储库中清除复制信息。</para>
    /// </summary>    
    [DisplayName("Clear Job Replication Information")]
    public class ClearJobReplicationInfo : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ClearJobReplicationInfo()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_Repository_URL">
        /// <para>Repository URL</para>
        /// <para><xdoc>
        ///   <para>The URL for the Workflow Manager (Classic) Server Object as defined on the server.</para>
        ///   <para>For example, http://ServerName/arcgis/rest/services/ServerObjectName/WMServer.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在服务器上定义的 Workflow Manager （Classic） 服务器对象的 URL。</para>
        ///   <para>例如，http://ServerName/arcgis/rest/services/ServerObjectName/WMServer。</para>
        /// </xdoc></para>
        /// </param>
        public ClearJobReplicationInfo(object _Input_Repository_URL)
        {
            this._Input_Repository_URL = _Input_Repository_URL;
        }
        public override string ToolboxName => "Workflow Manager Tools";

        public override string ToolName => "Clear Job Replication Information";

        public override string CallName => "wmx.ClearJobReplicationInfo";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_Input_Repository_URL, _Input_DatabasePath, _Output_Status];

        /// <summary>
        /// <para>Repository URL</para>
        /// <para><xdoc>
        ///   <para>The URL for the Workflow Manager (Classic) Server Object as defined on the server.</para>
        ///   <para>For example, http://ServerName/arcgis/rest/services/ServerObjectName/WMServer.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在服务器上定义的 Workflow Manager （Classic） 服务器对象的 URL。</para>
        ///   <para>例如，http://ServerName/arcgis/rest/services/ServerObjectName/WMServer。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Repository URL")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Repository_URL { get; set; }


        /// <summary>
        /// <para>Input Database Path</para>
        /// <para>The Workflow Manager (Classic) connection file (.jtc) for the database from which to delete the replication information. If no connection file is specified, the current default Workflow Manager (Classic) database is used.</para>
        /// <para>要从中删除复制信息的数据库的 Workflow Manager （Classic） 连接文件 （.jtc）。如果未指定连接文件，则使用当前默认的 Workflow Manager （Classic） 数据库。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Database Path")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Input_DatabasePath { get; set; } = null;


        /// <summary>
        /// <para>Clear Replication Status</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Clear Replication Status")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public long? _Output_Status { get; set; }


        public ClearJobReplicationInfo SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}